#ifndef __DEV_MULTI_BUTTON_H__
#define __DEV_MULTI_BUTTON_H__

#include "device_def.h"

#ifdef __cplusplus
extern "C" {
#endif

// MULTI BUTTON事件
enum {
    BTN_EVT_SINGLE_CLICKED = 0U, // 按键单击
    BTN_EVT_MULTI_CLICKED,       // 按键多击
    BTN_EVT_SHORT_CLICKED,       // 按键短按
    BTN_EVT_LONG_CLICKED,        // 按键长按
};

enum {
    BTN_CMD_MONITOR = 0U,     // 监视按键控制命令
};

// BUTTON结构体
DEVICE_CONTEXT_DECLARE (

    Dev_Multi_Button,

    struct {
        /**
        * @brief BUTTON驱动接口
        * @return BUTTON状态
        */
        uint8_t(*pfnRead)(void);
    },

    struct {
        uint8_t u8Active;           // 有效状态
        uint8_t u8State;            // 当前状态
        uint8_t u8Count;            // 按键点击次数
        uint8_t u8Reserved;         // 保留字段
        uint8_t u8Tick;             // 按键心跳
        uint8_t u8PressedTick;      // 当前按键按下时间
        uint8_t u8ShortTh;          // 短按时间阈值
        uint8_t u8Interval;         // 按键检测间隔 -- 长按时间阈值
    }
);

// MULTI BUTTON 设备大小
#define DEV_MUL_BTN_SIZE sizeof(Dev_Mul_Btn)

#ifdef __cplusplus
}
#endif

#endif /* __DEV_MULTI_BUTTON_H__ */
